# -*- coding;utf-8 -*-
"""
File name : FileOperate.py.PY
Program IDE : PyCharm
Create file time: 2025/6/11 12:32
File Create By Author : 朱清闯
"""
import os
import shutil


def copy_rename_file(source_file, destination_folder, new_file_name=None):
    try:
        # 确保目标目录存在
        os.makedirs(destination_folder, exist_ok=True)
        # 获取源文件的文件名（如果未提供新名称）
        if new_file_name is None:
            new_file_name = os.path.basename(source_file)
        # 构建目标文件的完整路径
        destination = os.path.join(destination_folder, new_file_name)
        shutil.copy2(source_file, destination)
        return destination
    except Exception as e:
        print(f"操作过程中出错: {e}")
        return 'error'


# 复制文件到目录下
def copy_file(source_file, destination_folder):
    try:
        shutil.copy2(source_file, destination_folder)
        print(f"文件 {source_file} 已成功复制到 {destination_folder} 文件夹中")
    except Exception as e:
        print(f"操作过程中出错: {e}")


# 删除目录下的所有文件
def delete_all_files_in_folder(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            try:
                if os.path.isfile(file_path):
                    os.remove(file_path)
            except Exception as e:
                print(f"删除文件 {file_path} 时出错: {e}")


def delete_file(source_file):
    # 检查文件是否存在
    if not os.path.exists(source_file):
        print(f"文件不存在: {source_file}")
        return False

    # 检查是否是文件而不是目录
    if not os.path.isfile(source_file):
        raise ValueError(f"路径不是文件: {source_file}")

    # 删除文件
    os.remove(source_file)
    print(f"文件已成功删除: {source_file}")
    return True


def delete_file_by_extension(folder, extension_name):
    """
    删除指定目录下所有具有特定扩展名的文件

    参数:
        folder (str): 要处理的目录路径，例如 "/static/tex"
        extension_name (str): 要删除的文件扩展名，例如 ".pdf"

    返回:
        int: 删除的文件数量
    """
    # 确保扩展名格式正确（以点开头）
    if not extension_name.startswith('.'):
        extension_name = '.' + extension_name

    # 转换为小写以实现不区分大小写的匹配
    extension_lower = extension_name.lower()

    # 计数器
    deleted_count = 0

    # 检查目录是否存在
    if not os.path.exists(folder):
        print(f"警告: 目录 '{folder}' 不存在")
        return 0

    # 遍历目录中的所有文件
    for root, _, files in os.walk(folder):
        for file in files:
            # 获取文件扩展名并转换为小写
            file_ext = os.path.splitext(file)[1].lower()

            # 如果扩展名匹配，删除文件
            if file_ext == extension_lower:
                file_path = os.path.join(root, file)
                try:
                    os.remove(file_path)
                    deleted_count += 1
                    print(f"已删除: {file_path}")
                except Exception as e:
                    print(f"无法删除 {file_path}: {e}")

    print(f"总共删除了 {deleted_count} 个 {extension_name} 文件")
    return deleted_count
